	
/*定义全局变量*/

	var gDAY = 86400000;		// 1天间隔 86400000 毫秒
	var gNow = new Date();		// 今天
	var gNowID = gNow.getDay()%7+1;// 今天在 HTML 页面中的 id , 
	var gCommitDate = [];
	var gLastSelect = [];		// 上一次选择的日期
	
/*生成日历*/

	
	for (var index=0;index<6;index++)	// 日历有6行
	{

		//console.log("week"+day);
		for (var index_day=0;index_day<7;index_day++)	// 1周7天
		{		
			var day = new Date(gNow.getTime()+gDAY*(index*7+index_day-(gNowID-1)));	// index*7+index_day 为下标
			//console.log(day.getDay());	// test 星期日数
			//console.log(day.getDate());
					
			var d_index = "d" + (index*7+index_day+1);						// 日历下标			
			var d_content = day.getDate();									// 日历内容
			
			if (day.getDate() == "1")
			{
				d_content = (day.getMonth()+1) + '月';
			}
			if(index*7+index_day+1 > (gNowID+31))
			{ // 超出30天，disable 
				document.getElementById(d_index).innerHTML="<div class=\"date-disabled\">"+d_content+"</div>";
				continue;
			}
			
			if(index*7+index_day+1 < gNowID)
			{ // 时间已过去，disable 
				document.getElementById(d_index).innerHTML="<div class=\"date-disabled\">"+d_content+"</div>";
				continue;
			}
			
			// 其余可以选择的时间
			document.getElementById(d_index).innerHTML="<div class=\"date-normal\">"+d_content+"</div>";		// 输出到界面上
		}
	}
	
	var today = "d" + (gNow.getDay()%7+1);
	document.getElementById(today).innerHTML="<div id=\"today\">今</div>";
	
/*监听日历操作*/	
$(document).ready(function(){
	$("#d1,#d2,#d3,#d4,#d5,#d6,#d7,#d8,#d9,#d10,#d11,#d12,#d13,#d14,#d15,#d16,#d17,#d18,#d19,#d20,#d21,#d22,#d23,#d24,#d25,#d26,#d27,#d28,#d29,#d30,#d31,#d32,#d33,#d34,#d35,#d36,#d37,#d38,#d39,#d40,#d41,#d42").bind("click",function(){
		//alert($(this)[0].innerHTML); 	//test $(this) 是否有效
		//alert($(this).attr('id')); 	//test 所点击的格子
		
		var selectedDIV = $(this).find('div');	// 选中的 div 		
		
		if ( ( selectedDIV.hasClass("date-normal")) || (selectedDIV.hasClass("date-lastSelect")) )
		{	
			if (selectedDIV.hasClass("date-lastSelect")) 
			{
				selectedDIV.removeClass("date-lastSelect");
				selectedDIV.addClass("date-normal");
				removeSelectedDate($(this).attr('id'));
			}
				else 
			if ( ( selectedDIV.hasClass("date-selected"))  )
			{	// 移除选中状态
				selectedDIV.removeClass("date-selected");
				removeSelectedDate($(this).attr('id'));
			} else 
				{	// 选择该日期 
					selectedDIV.addClass("date-selected");
					addSelectedDate($(this).attr('id'));
				}
		}	
	});	
	
	/** 邀请函界面 **/
	
 	// 生成发起邀请页面中选择发送邀请函日期的datepicker 
	if (document.getElementById("invite-date")) {
		var datePicker = $("#invite-date").datepicker({
			altField: "#invite-date",
			altFormat: "yy-mm-dd",
			minDate:"+1d",
			maxDate:"+30d",
			showOn:'both',
			buttonImage: './style/images/datepicker.png',
			buttonImageOnly:true,
			buttonText:'',
			onSelect:function() {
				$('#ui-datepicker-div').hide();
			}			
		});
		
		/*汉化*/
		$.datepicker.setDefaults( $.datepicker.regional['ch']={ // 汉化设置
			prevText:'上一月',
			nextText:'下一月',
			monthNames:['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
			dayNames: ['周日','周一', '周二', '周三', '周四', '周五', '周六'], // For formatting
			dayNamesShort: ['日','一', '二', '三', '四', '五', '六'], // For formatting
			dayNamesMin: ['日','一', '二', '三', '四', '五', '六'], // Column headings for days starting at Sunday
			showMonthAfterYear: true, // True if the year select precedes month, false for month then year
			yearSuffix: '年' // Additional text to append to the year in the month headers
		}); 
		//$('#datepicker').datepicker(datePicker);
	}

	// 点选空闲时间页面中初始化日历中disabled的日期
	if (document.getElementById("holdDate")) {
		var sHoldDate = document.getElementById("holdDate").getAttribute('value');	// 接受数据(字符串) 存放在 #holdDate 的 value 属性中
		var aHoldDate = sHoldDate.split(';');	// 将字符串转换为数组类型，数值为可选日与今日相差的日数
		for(var i=0;i<(aHoldDate.length-1);i++) {	// 
			aHoldDate[i] = Number(aHoldDate[i]);
			aHoldDate[i] += gNowID;
			aHoldDate[i] = 'd' + aHoldDate[i];
		}

		__setAvailableDate(aHoldDate);	// 根据可选日期直接disable掉余下不可选的日期
	}
	
	// 在日历上显示用户最后一次选择的日期
	if (document.getElementById("lastSelect")) {
		var sLastSelect = document.getElementById("lastSelect").getAttribute('value'); // 接受数据(字符串) 存放在 #holdDate 的 value 属性中
		
		var aLastSelectDate = [];	// 最后一次选择日期的数组
		aLastSelectDate = __SplitDatesIntoArray(sLastSelect);	// 将字符串数据转为数组类型
		for(var i=0;i<(aLastSelectDate.length-1);i++) {	// 
			if(aLastSelectDate[i] == "")
			{	// 当遇到空字符串 "" 时，结束遍历
				break;
			}
			__SetLastSelect(aLastSelectDate[i]);
		}

	}
	
});

// 添加选择的日期 
function addSelectedDate(dayID) {	// dayID 对应 HTML 中的 id 
	var preparedDate = __prepareSelectedDate(dayID);
	gCommitDate[dayID] = preparedDate;
	__setSelectedDate(gCommitDate)
};

// 取消选择的日期
function removeSelectedDate(dayID) {
	delete gCommitDate[dayID];
	delete gLastSelect[dayID];
	__setSelectedDate(gCommitDate)
};

// 生成欲提交日期,将已选定日期赋值至 hidden 表单
function __setSelectedDate(commitDate) {
	var launchDate = '';
	for(var ld in gLastSelect) {
		launchDate += gLastSelect[ld]+';';
	}
	
	for(var d in commitDate) {
    //console.log(commitDate[d]); 		// test 遍历JS数组,获取map值
	launchDate += commitDate[d]+';';	
}
	document.getElementById('launch-date').value = launchDate;
}

// 将 id = dxx 转换为 YYYY-MM-DD 格式 (如果后台直接处理UNIX时间戳方便的话？？)
function __prepareSelectedDate(dayID) {
	
	var selectedID = dayID.replace("d","");
	//alert(selectedDay); 	// test 字符串替换是否有效
	//alert(gNow);			// test gNow 这个变量是否能在此函数下运行
	
	// 通过 id 得出对应的 时间
	var selectedDate = new Date(gNow.getTime()+ ( selectedID-gNowID)*gDAY);
	//alert(selectedDate);	// test 转换的时间是否正确
	
	var sDateZero = '';
	if (selectedDate.getDate()<10)
	{
		sDateZero = '0';
	}
	var preparedSelectedDate = selectedDate.getFullYear()+"-"+(selectedDate.getMonth()+1)+"-"+sDateZero+selectedDate.getDate();
	//alert(selectedDate.getMonth());	// test JS获取当前月份会少1
	//alert(preparedSelectedDate); // test 字符串拼接，作为处理好的数据 
	return preparedSelectedDate;
};
	
	
/**
 *	根据可选日期，从而disable掉日历上不可选择的,enable可选的
 *  param:	Array(): aHoldDate	//  ("d1","d2","d3","d4","")	//！会多出一位空白项
 *	return:	
**/
function __setAvailableDate(holdDate) {
	var disableIndex ;						// 日历下标
	// 先全部 disable 
	for (var i = (gNowID+1);i<=(gNowID+31);i++)
	{
		disableIndex = 'd' + i;
		__disableNotHoldDate(disableIndex);
	}
	// 再 enable holdDate 
	for (var h in holdDate) 
	{	
		if(holdDate[h] == "")
		{	// 当遇到空字符串 "" 时，结束遍历
			break;
		}
		__enableHoldDate(holdDate[h]);
	}
}

function __disableNotHoldDate(dayID) {
	var disableDate = document.getElementById(dayID);
	disableDate.childNodes[0].className = "date-disabled";
	//alert(disableDate);
	
}
function __enableHoldDate(dayID) {
	var enableDate = document.getElementById(dayID);
	enableDate.childNodes[0].className = "date-normal";
	//alert(enableDate);
}

/**	 2012-11-10 
 *	设定指定日期为 用户最后选择的日期(LastSelect)
 *
**/
function __showLastSelectDate(dayID) {
	var lastSelectDate = document.getElementById(dayID);
	lastSelectDate.childNodes[0].className = "date-lastSelect";	// 颜色为 CYAN
}

/**	 2012-11-14 
 *	调用显示 Last Select 日期功能 
 *	param: Array[] 
**/
function __SetLastSelect(t_LastSelectDate) {
	var dLastSelect = new Date(t_LastSelectDate);	// 转换为 Date() 类型 
	var iDiff = parseInt((dLastSelect-gNow)/gDAY) ;			//  该日期与今日作差
	var iLastSelectIndex = iDiff + gNowID + 1;				//	日期差加上今日在日历中的id 得到 该日期 的索引值
	if (iDiff<0)
	{
		iLastSelectIndex--;
	}
	var sLastSelectIndex = 'd' + iLastSelectIndex;
	__showLastSelectDate(sLastSelectIndex);					// 在页面上显示
	gLastSelect[sLastSelectIndex] = t_LastSelectDate;		// 添加到 全局数组中  

}


/**	 2012-11-14 
 *	拆分字符串 YY-MM-DD;YY-MM-DD; 为  数组 
 *	param:String 	
 *  return:Array[]
**/
function __SplitDatesIntoArray(tLastSelectDate) {
	aLastSelectDate = tLastSelectDate.split(';');	// 将字符串转换为数组类型，数值为可选日与今日相差的日数
	return aLastSelectDate;
}